package MediaOnline.GUI;

import java.util.ArrayList;


import MediaOnline.Adapter.DBAdapter;
import MediaOnline.Adapter.smallTextListViewAdapter;
import MediaOnline.Data.FilmCatData;
import MediaOnline.General.checkNetwork;
import MediaOnline.General.paramConst;
import MediaOnline.WebService.DownloadUpdate;
import MediaOnline.WebService.getFilmCat;
import MediaOnline.WebService.getVideoByPage;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.LocalActivityManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.View.OnKeyListener;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class actFilmMain3 extends Activity{

	//Giao diện
	public static Button btnDownload;
	public static Button btnChiTiet;
	public static Button btnHinhAnh;
	public static Button btnExit;
	public static Button btnTrangTruoc;
	public static Button btnTrangSau;
	public static Button btnTimKiem;
	public static ListView lstTheLoaiPhim;
	public static ListView lstSapXep;
	public static TextView lblTatCa;
	public static TextView lblPhimLe;
	public static TextView lblPhimBo;
	public static TextView lblVersion;
	public static TextView lblTongSoTrang;
	public static TextView lblXepTheoNgayDang;
	public static TextView lblXepTheoTenPhim;
	public static TextView lblXepTheoNamSanXuat;
	public static EditText txtTrang;
	public static EditText txtTimKiem;
	public static LinearLayout layoutDanhSachPhim;
	public static LinearLayout layoutQuangCao;
	private Handler mHandler = new Handler();
	//Khai báo các biến cần dùng
	int quangcao=0;
	public static int TongSoTrang=1;
	public static int Trang = 1;
	public static int FilmCat = -1;
	public static Context ctx;
	public static ArrayList<String> arrFilmCat;
	public static smallTextListViewAdapter adpFilmCat;
	public static boolean getDownloaded = false;
	
	//=================== Quang Cao ==========================
	
	//Hieu ung chuyen quang cao
    Animation anim;
    
    //Thay doi quang cao
    private Runnable mUpdateTimeTask = new Runnable() 
    {
       public void run() 
       {
           quangcao++;
           if (quangcao%3==1)
           {
        	   layoutQuangCao.setBackgroundResource(R.drawable.ad1);
        	   layoutQuangCao.startAnimation(anim);
           }
           if (quangcao%3==2)
           {
        	   layoutQuangCao.setBackgroundResource(R.drawable.ad2);
        	   layoutQuangCao.startAnimation(anim);
           }
           if (quangcao%3==0)
           {
        	   layoutQuangCao.setBackgroundResource(R.drawable.ad3);
        	   layoutQuangCao.startAnimation(anim);
           }
           if (quangcao%4==0)
           {
        	   layoutQuangCao.setBackgroundResource(R.drawable.ad4);
        	   layoutQuangCao.startAnimation(anim);
           }
           // timer
           mHandler.postDelayed(mUpdateTimeTask, ( 4 * 1000)) ;
       }
    };
	
    //=================== Quang Cao ==========================
    DBAdapter mDB;    
    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.filmmain3);
		ctx=actFilmMain3.this;

	 
		//=================Goi service==============
        //Start Service 
        final myService dbSer = new myService();
        mDB=new DBAdapter(actFilmMain3.this);
        dbSer.SetContext(mDB);
        startService(new Intent(actFilmMain3.this, myService.class));
        //Kiem tra tablet co dang ket noi mang ko
        checkNetwork check = new checkNetwork();
        boolean isOnline=check.checkConn(actFilmMain3.this);
        Log.d("Network status:::::::: ", ""+isOnline);
        //Neu da co du lieu (da get du lieu) thi khong check connection de get du lieu ve nua
        //Neu khong co du lieu thi check connection de biet co ket noi internet hay khong
        if (isOnline)
        	dbSer.CheckUpdate();
        getVideoByPage.timkiem = "";
		
		//Giao diện
		btnDownload = (Button) findViewById(R.id.filmmain3_btnBack);
		btnChiTiet = (Button) findViewById(R.id.filmmain3_btnChiTiet);
		btnHinhAnh = (Button) findViewById(R.id.filmmain3_btnHinhAnh);
		btnExit = (Button) findViewById(R.id.btnExit);
		btnTrangTruoc = (Button) findViewById(R.id.filmmain3_btnPreviousPage);
		btnTrangSau = (Button) findViewById(R.id.filmmain3_btnNextPage);
		lstTheLoaiPhim = (ListView) findViewById(R.id.filmmain3_lstTheLoaiFilm);
		lblTongSoTrang = (TextView) findViewById(R.id.filmmain3_lblTrang);
		lblTatCa = (TextView) findViewById(R.id.filmmain3_lblTatCa);
		lblTatCa.setTextColor(Color.GREEN);
		lblPhimBo = (TextView) findViewById(R.id.filmmain3_lblPhimBo);
		lblPhimLe = (TextView) findViewById(R.id.filmmain3_lblPhimLe);
		txtTimKiem = (EditText) findViewById(R.id.filmmain3_txtTimKiem);
		lblVersion = (TextView) findViewById(R.id.txtVersion);
		lblVersion.setText("Version : "+paramConst.NAHUROID_VERSION);
		btnTimKiem = (Button) findViewById(R.id.filmmain3_btnTimKiem);
		txtTrang = (EditText) findViewById(R.id.filmmain3_txtTrang);
		txtTrang.setText(""+Trang);
		layoutDanhSachPhim = (LinearLayout) findViewById(R.id.layoutlistfilm);
		layoutQuangCao = (LinearLayout) findViewById(R.id.layoutQuangCao);
		lblXepTheoNgayDang = (TextView) findViewById(R.id.filmmain3_txtXepTheoNgayDang);
		lblXepTheoTenPhim = (TextView) findViewById(R.id.filmmain3_XepTheoTenPhim);
		lblXepTheoNamSanXuat = (TextView) findViewById(R.id.filmmain3_XepTheoNamSanXuat);
		btnChiTiet.setBackgroundResource(R.drawable.filmmain3btnchitiethov);
		lblXepTheoNgayDang.setTextColor(Color.GREEN);
		
		//========================= Quang Cao============================
		anim = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
		anim.setDuration(1000);
		layoutQuangCao.startAnimation(anim);
		//Thread quang cao
		mHandler.removeCallbacks(mUpdateTimeTask);
		mHandler.postDelayed(mUpdateTimeTask, 100);
		//========================= / Quang Cao============================
		
		
		//========================= Load film category ==================================
		GetFilmCat();
		//========================= Load film category ==================================
		
		
		//========================= Load activity list film ==============================
        LocalActivityManager m = new LocalActivityManager(this, false);
		m.dispatchCreate(savedInstanceState);
		Intent intent = new Intent().setClass(this, actListFilm.class);
	    Window w = m.startActivity("listfilm", intent);
	    View v = w.getDecorView();
	    layoutDanhSachPhim.addView(v);
	    //========================= / Load activity list film ==============================
	    
	    btnChiTiet.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				actListFilm.UpdateList(1);
				ChangeHover();
			}
		});
	    
	    btnHinhAnh.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				actListFilm.UpdateList(2);
				ChangeHover();
			}
		});
	    
	    btnDownload.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//
				//finish();
				getDownloaded = true;
				actListFilm.UpdateListDownloadedFilm();
				//finish();
			}
		});
	    
	    btnExit.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				finish();
			}
		});
	    
	    //========================= Xử lí button trang trước trang sau==================
	    
	    btnTrangTruoc.setOnClickListener( new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (Trang>1) {
					Trang = Trang - 1;
					LoadVideoByPage();
				}
			}
		});
	    
	    btnTrangSau.setOnClickListener( new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (Trang<TongSoTrang) {
					Trang=Trang+1;
					LoadVideoByPage();
				}
			}
		});
	    
	    
	    //========================= / Xử lí button trang trước trang sau==================
	    
	    
	    //=========================== Nhap so trang ==========================
	    txtTrang.setOnKeyListener(new OnKeyListener() {
			
			public boolean onKey(View v, int keyCode, KeyEvent event) {
				// TODO Auto-generated method stub
				// If the event is a key-down event on the "enter" button
	            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
	                (keyCode == KeyEvent.KEYCODE_ENTER)) {
	              // Perform action on key press
	            	try {
						int i = Integer.parseInt(txtTrang.getText().toString());
						//Bắt lỗi 
						if (i<1 || i>TongSoTrang) {
							//============Hien thi thong bao=======================
							AlertDialog alertDialog = new AlertDialog.Builder(actFilmMain3.this).create();
							alertDialog.setTitle("Thông báo!");
							alertDialog.setMessage("Dữ liệu nhập vào không hợp lệ. Vui lòng nhập lại!");
							alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
							   public void onClick(DialogInterface dialog, int which) {
								   txtTrang.setText(""+Trang);
							   }
							});
							alertDialog.show();
							//=====================================================
						}
						//Nếu số trang hợp lệ
						else{
							Trang = Integer.parseInt(txtTrang.getText().toString());
							LoadVideoByPage();
						}
					} catch (Exception e) {
						// TODO: handle exception
						//Nếu dữ liệu nhập vào không phải là số
						//============Hien thi thong bao=======================
						AlertDialog alertDialog = new AlertDialog.Builder(actFilmMain3.this).create();
						alertDialog.setTitle("Thong bao!");
						alertDialog.setMessage("Dữ liệu nhập vào không hợp lệ. Vui lòng nhập lại!");
						alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
						   public void onClick(DialogInterface dialog, int which) {
							   txtTrang.setText(""+Trang);
						   }
						});
						alertDialog.show();
						//=====================================================
					}
	              return true;
	            }
	            return false;
			}
		});
	    
	    //=========================== Nhap so trang ==========================
	    
	    
	    //================== Nhấn vào film cat sẽ hiện ra danh sách phim theo cat đó===============
	    
	    lstTheLoaiPhim.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> parent, View v, int position,
					long arg3) {
				// TODO Auto-generated method stub
				//reset màu chữ
				for(int i=0; i<parent.getChildCount(); i++)
				{
				     if(i == position)
				     {
				         ((TextView)parent.getChildAt(i)).setTextColor(Color.GREEN);
				     }
				     else
				     {
				    	 ((TextView)parent.getChildAt(i)).setTextColor(Color.WHITE);
				     }
				 }
				getDownloaded = false;
				getVideoByPage.timkiem="";
				Trang=1;
				txtTrang.setText(""+Trang);
				FilmCat = FilmCatData.lstFilmCatID.get(position);
				actListFilm.LoadFilmByCat(FilmCat);
			}
	    	
		});
	    
	    
	    //================= / Nhấn vào film cat sẽ hiện ra danh sách phim theo cat đó===============
	    
	    
	    //=================== Xử lí sắp xếp =======================
	    lblXepTheoNgayDang.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//Reset màu chữ
				lblXepTheoNamSanXuat.setTextColor(Color.WHITE);
				lblXepTheoNgayDang.setTextColor(Color.WHITE);
				lblXepTheoTenPhim.setTextColor(Color.WHITE);
				//Cho màu chữ là màu xanh
				((TextView)v).setTextColor(Color.GREEN);
				getVideoByPage.sapxep="F.CreateDate DESC";
				actListFilm.LoadFilmByCat(FilmCat);
			}
		});
	    
	    lblXepTheoTenPhim.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//Reset màu chữ
				lblXepTheoNamSanXuat.setTextColor(Color.WHITE);
				lblXepTheoNgayDang.setTextColor(Color.WHITE);
				lblXepTheoTenPhim.setTextColor(Color.WHITE);
				//Cho màu chữ là màu xanh
				((TextView)v).setTextColor(Color.GREEN);
				getVideoByPage.sapxep="F.FilmName ASC";
				actListFilm.LoadFilmByCat(FilmCat);
			}
		});

		lblXepTheoNamSanXuat.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//Reset màu chữ
				lblXepTheoNamSanXuat.setTextColor(Color.WHITE);
				lblXepTheoNgayDang.setTextColor(Color.WHITE);
				lblXepTheoTenPhim.setTextColor(Color.WHITE);
				//Cho màu chữ là màu xanh
				((TextView)v).setTextColor(Color.GREEN);
				getVideoByPage.sapxep="F.FilmName ASC";
				actListFilm.LoadFilmByCat(FilmCat);
			}
		});
	    
	    
	    //=================== / Xử lí sắp xếp =======================
		
		//=================== Button tim kiem =======================
		btnTimKiem.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Log.d("text Tim kiem:::::", txtTimKiem.getText().toString().trim());
				if (!txtTimKiem.getText().toString().trim().equals("")) {
					String s = txtTimKiem.getText().toString();
					getVideoByPage.timkiem = s;
					actListFilm.LoadFilmByCat(FilmCat);
				}
			}
		});
		
		txtTimKiem.setOnKeyListener(new OnKeyListener() {
			
			public boolean onKey(View v, int keyCode, KeyEvent event) {
				// TODO Auto-generated method stub
				if (keyCode == KeyEvent.KEYCODE_ENTER) {
					if (!txtTimKiem.getText().toString().trim().equals("")) {
						String s = txtTimKiem.getText().toString();
						getVideoByPage.timkiem = s;
						actListFilm.LoadFilmByCat(FilmCat);
					}
					return true;
				}
				else{
					return false;
				}
				
			}
		});
		
		txtTimKiem.setOnFocusChangeListener(new OnFocusChangeListener() {
			
			public void onFocusChange(View v, boolean hasFocus) {
				// TODO Auto-generated method stub
				if (hasFocus==true)
	            {
	                txtTimKiem.setText("");
	            }
			}
		});
		
		//=================== Button tim kiem =======================
		
		//=================== Label phim bộ phim lẻ =================
		lblTatCa.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//Reset màu
				lblTatCa.setTextColor(Color.WHITE);
				lblPhimBo.setTextColor(Color.WHITE);
				lblPhimLe.setTextColor(Color.WHITE);
				//Thêm màu
				((TextView)v).setTextColor(Color.GREEN);
				getVideoByPage.timkiem = "";
				//Load lại thể loại phim
				getFilmCat.BoLe=-1;
				GetFilmCat();
				//Cho thể loại bằng -1
				getVideoByPage.BoLe=1;
				FilmCat=-1;
				actListFilm.LoadFilmByCat(FilmCat);
				
			}
		});
		
		lblPhimBo.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//Reset màu
				lblTatCa.setTextColor(Color.WHITE);
				lblPhimBo.setTextColor(Color.WHITE);
				lblPhimLe.setTextColor(Color.WHITE);
				//Thêm màu
				((TextView)v).setTextColor(Color.GREEN);
				getVideoByPage.timkiem = "";
				//Load lại thể loại phim
				getFilmCat.BoLe=0;
				GetFilmCat();
				//Cho thể loại bằng -1
				FilmCat=-1;
				getVideoByPage.BoLe=0;
				actListFilm.LoadFilmByCat(FilmCat);
			}
		});
		
		lblPhimLe.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//Reset màu
				lblTatCa.setTextColor(Color.WHITE);
				lblPhimBo.setTextColor(Color.WHITE);
				lblPhimLe.setTextColor(Color.WHITE);
				//Thêm màu
				((TextView)v).setTextColor(Color.GREEN);
				getVideoByPage.timkiem = "";
				//Load lại thể loại phim
				getFilmCat.BoLe=1;
				GetFilmCat();
				//Cho thể loại bằng -1
				FilmCat=-1;
				getVideoByPage.BoLe=-1;
				actListFilm.LoadFilmByCat(FilmCat);
			}
		});
		//=================== / Label phim bộ phim lẻ =================
		
	}
	

	@Override
    public void onStop() 
    {
        super.onStop();
        // timer 
        mHandler.removeCallbacks(mUpdateTimeTask);
    }
	
	 private void LoadVideoByPage(){
		//Add activity list phim
		 	txtTrang.setText(""+Trang);
			getVideoByPage g = new getVideoByPage(ctx);
			g.execute();
	 }
	 
	 public static void UpdateFilmCat(){
			Log.d("Update film cat::::::", "done");
			Log.d("So the loai phim ::::::", ""+FilmCatData.lstFilmCatName.size());
			adpFilmCat = new smallTextListViewAdapter(ctx);
			lstTheLoaiPhim.setAdapter(adpFilmCat);
			adpFilmCat.notifyDataSetChanged();
		}
	
	//Thay đổi hover nút hình ảnh và chi tiết
	 public void ChangeHover(){
		 if (actListFilm.ChiTiet) {
			btnHinhAnh.setBackgroundResource(R.drawable.filmmain3btnhinhanh);
			btnChiTiet.setBackgroundResource(R.drawable.filmmain3btnchitiethov);
		}
		 else {
			btnHinhAnh.setBackgroundResource(R.drawable.filmmain3btnhinhanhhov);
			btnChiTiet.setBackgroundResource(R.drawable.filmmain3btnchitiet);
		}
	 }
	 
	 public void GetFilmCat(){
		adpFilmCat = new smallTextListViewAdapter(ctx);
		lstTheLoaiPhim.setAdapter(adpFilmCat);
		getFilmCat g = new getFilmCat(ctx);
		g.execute();
	 }
	 
	 public static void Update(){
	    	DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
			    public void onClick(DialogInterface dialog, int which) {
			        switch (which){
			        case DialogInterface.BUTTON_POSITIVE:
			            //Yes button clicked
			            DownloadUpdate d = new DownloadUpdate(ctx);
			            d.execute();

			        case DialogInterface.BUTTON_NEGATIVE:
			            //No button clicked
			            break;
			        }
			    }
			};

			AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
			builder.setMessage("Phiên bản phần mềm bạn đang sử dụng đã lỗi thời (phiên bản"+paramConst.NAHUROID_VERSION+"). Bạn có muốn cập nhật phiên bản mới (phiên bản : "+paramConst.NAHUROID_NEWVERSION+") để có các chức năng tốt hơn?").setPositiveButton("Có", dialogClickListener)
			    .setNegativeButton("Không", dialogClickListener).show();
	    }
}
